//go:build wireinject

// 使用wire来注入这里的代码
// Package wire
/**
* @Project : geektime-basic-go-study
* @File    : wire.go
* @IDE     : GoLand
* @Author  : Tvux
* @Date    : 2024/10/7 20:50
**/

package wire

import (
	"geektime-basic-go-study/wire/repository"
	"geektime-basic-go-study/wire/repository/dao"
	"github.com/google/wire"
)

func InitUserRepository() *repository.UserRepository {
	// 我只在这里声明我要用的各种东西，但是具体怎么构造，怎么编排顺序，由wire负责
	// 传入各个组件的初始化方法
	//wire.Build(repository.NewUserRepository, dao.NewUserDAO, InitDB) // 这里的顺序随便
	wire.Build(InitDB, dao.NewUserDAO, repository.NewUserRepository)
	// 这里只需要先保证有个返回值即可，wire会自己根据构造出来的东西以及函数返回值来返回
	//return new(repository.UserRepository)
	return nil
}
